A Survey of Unix Init Schemes
نویسندگان
چکیده
In most modern operating systems, init (as in “initialization”) is the program launched by the kernel at boot time. It runs as a daemon and typically has PID 1. Init is responsible for spawning all other processes and scavenging zombies. It is also responsible for reboot and shutdown operations. This document describes existing solutions that implement the init process and/or init scripts in Unix-like systems. These solutions range from the legacy and still-in-use BSD and SystemV schemes, to recent and promising schemes from Ubuntu, Apple, Sun and independent developers. Our goal is to highlight their focus and compare their sets of features. Key-words: init process, init scheme Etat de l’art des processus init Résumé : Dans la plupart des systèmes d’exploitation modernes, init (comme “initialisation”) est l’application lancée par le noyau au démarrage. Il s’agit d’un démon qui a le PID 1. init a pour tâches de lancer les autres processus et de nettoyer les processus zombies. Il est aussi responsable du démarrage et redémarrage du système. Ce document décrit les implantations existantes du processus init et des scripts init pour variantes d’Unix. Ces implantations vont des solutions BSD et SystemV, pionnières et toujours utilisées, à celles plus récentes et prometteuses venant de Ubuntu, Apple, Sun, ainsi que de développeurs indépendants. Notre but ici est d’analyser les objectifs de ces implantations, et de comparer leurs fonctionnalités. Mots-clés : processus init A Survey of Unix Init Schemes 3 The Boot Process What happens between the moment a computer is switched on and the moment a user can log in? Let us begin by a quick and simplified overview of the boot process in most modern operating systems. 1. The computer is switched on or rebooted; 2. The BIOS, stored on the motherboard, is executed from a known location (flash memory); 3. The BIOS determines the boot device (local disc, removable media, PXE from the network); 4. The boot device has a special, known sector called the Master Boot Record, which contains the stage 1 bootloader. The stage 1 bootloader is loaded into RAM, and points to the stage 2 bootloader. The latter can be several sectors long, and is stored on the boot device in a location unknown to the BIOS and subject to change; 5. The stage 2 bootloader (e.g., LILO or GRUB for Linux) uncompresses and launches the kernel; 6. The kernel runs a single application. For Linux, the default is /sbin/init, and can be modified in LILO or GRUB by passing the init=/path/to/executable parameter to the kernel. Usually, init launches a few getty processes for virtual terminals, a few daemons (cron, dhcp, acpi), the X server, etc. On Unix-like systems, init (as in “initialization”) is the program launched by the kernel at boot time. It runs as a daemon and typically has PID 1. init is responsible for spawning all other processes and scavenging zombies. It is also responsible for reboot and shutdown operations. A Bit of History The first widespread init is the simple solution from BSD. Its main competitor is the more featureful but more complex System V init. The BSD init process simply launches a list of processes. It basically reads a configuration file (/etc/rc) where all programs to launch at startup are statically listed. If the administrator wants to modify this list, she must edit the file manually, which is clearly error-prone and has potentially disastrous effects. This is a very simple and lightweight scheme, but it is completely static.
منابع مشابه
Improve the Debian Boot Process Google Summer of Code 2006 State-of-the-Art in the Boot Process First Deliverable
The boot process of unix-like operating systems has been based, until recently, on the init script system used in System 5 [20]. This process is commonly called sysvinit is dominated by the rc script which calls all the processes required for a determined runlevel one after the other in a prespecified order. The order given to this scripts is conservative as there is not information of what scr...
متن کاملThe Design and Implementation of the NetBSD rc.d System
In this paper I cover the design and implementation of the rc.d system start-up mechanism in NetBSD 1.5, which replaced the monolithic /etc/rc start-up file inherited from 4.4BSD. Topics covered include a history of various UNIX start-up mechanisms (including NetBSD prior to 1.5), design considerations that evolved over six years of discussions, implementation details, an examination of the hum...
متن کاملIdeals Defining Unions of Matrix Schubert Varieties
This note computes a Gröbner basis for the ideal defining a union of matrix Schubert varieties. Moreover, the theorem presented will work for any union of schemes defined by northwest rank conditions. This provides a means of intersecting a large class of determinantal ideals. Introduction We compute a Gröbner basis for the ideal defining a union of schemes defined by northwest rank conditions ...
متن کاملA little extension of TEX Petr
Motto: Certainly, if I were a publishing house, if I were in the publishing business myself, I would have probably had ten different versions of T E X by now for ten different complicated projects that had come in. They would all look almost the same as T E X, but no one else would have this program — they wouldn't need it, they're not doing exactly the book that my publishing house was doing. ...
متن کاملU-root: A Go-based, Firmware Embeddable Root File System with On-demand Compilation
U-root is an embeddable root file system intended to be placed in a FLASH device as part of the firmware image, along with a Linux kernel. The program source code is installed in the root file system contained in the firmware FLASH part and compiled on demand. All the u-root utilities, roughly corresponding to standard Unix utilities, are written in Go, a modern, type-safe language with garbage...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- CoRR
دوره abs/0706.2748 شماره
صفحات -
تاریخ انتشار 2007